﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Sesi.Dados.Entidades;
using Sesi.Servico;

namespace Sesi.Telas
{
    public partial class ListarParticipantes : Form
    {
        private IList<Participante> _listaDeParticipantes;
        private int IdParticipante;
        public static bool _isUpdate;

        #region GetSetParticipante
        private static Participante _participanteSelecionado;
        public static Participante ParticipanteSelecionado
        {
            get { return _participanteSelecionado; }
            set { _participanteSelecionado = value; }
        }
        #endregion

        public ListarParticipantes()
        {
            InitializeComponent();
            CarregarGrid();
            cbTipoPesquisa.SelectedIndex = 1;
            txtCampoPesquisa.Focus();
        }

        private void SelecionarParticipante()
        {
            IdParticipante = int.Parse(dgParticipantes.CurrentRow.Cells[0].Value.ToString());

            ParticipanteSelecionado = Fachada.GetInstancia().ObterParticipantesPorId(IdParticipante);
            //ParticipanteSelecionado = (from c in _listaDeParticipantes
            //                           where c.ParticipantesId == IdParticipante
            //                           select c).Single();
        }

        private void CarregarGrid()
        {
            _listaDeParticipantes = new List<Participante>();
            _listaDeParticipantes  = Fachada.GetInstancia().ObterTodosParticipantes();
            BSParticipantes.DataSource = null;
            BSParticipantes.DataSource = _listaDeParticipantes;
            dgParticipantes.DataSource = null;
            dgParticipantes.DataSource = BSParticipantes;
        }

        private void btNovo_Click_1(object sender, EventArgs e)
        {
            _isUpdate = false;
            CadastroParticipantes cadastroParticipantes = new CadastroParticipantes();

            cadastroParticipantes.ShowDialog();
            CarregarGrid();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (ParticipanteSelecionado != null)
            {
                _isUpdate = true;
                CadastroParticipantes cadastroParticipantes = new CadastroParticipantes();

                cadastroParticipantes.ShowDialog();
                CarregarGrid();
            }
            else
            {
                MessageBox.Show("Selecione um Participante", "Selecionar Participante", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
         
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Deseja fechar o Sistema?", "Fechar Sistema", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
            {
                Close();
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (ParticipanteSelecionado != null)
            {
                if (MessageBox.Show("Deseja Excluir o Participante "+ ParticipanteSelecionado.Nome+"?", "Exclusão de Participante", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                {
                    bool tudoCerto = false;
                    Fachada.GetInstancia().ExcluirParticipantes(ParticipanteSelecionado.ParticipantesId, ref tudoCerto);
                    if (tudoCerto)
                    {
                        CarregarGrid();
                    }
                }
            }
            else
            {
                MessageBox.Show("Selecione um Participante!","Selecione um Participante",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
            }
            
        }

        private void dgParticipantes_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            SelecionarParticipante();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Relatorio relatorio = new Relatorio();
            relatorio.Show();
        }

        private void PesquisarPorNome(string nome)
        {
            if (nome.Length > 0)
            {
                int contador = 0;
                foreach (Participante participante in _listaDeParticipantes)
                {
                    if (participante.Nome != null)
                    {
                        if (participante.Nome.Substring(0, nome.Length).ToUpper() == nome.ToUpper())
                        {
                            //dgParticipantes.Rows[contador].Selected = true;
                            dgParticipantes[1,contador].Selected = true;
                            dgParticipantes_CellClick(new object(), new DataGridViewCellEventArgs(0,0));
                            break;                            
                        }

                    }
                    
                    contador++;
                }
            }            
        }

        private void PesquisarPorCpf(string cpf)
        {

            if (cpf.Length > 0)
            {
                int contador = 0;
                foreach (Participante participante in _listaDeParticipantes)
                {

                    if (participante.Cpf != null)
                    {
                        if (participante.Cpf.Substring(0, cpf.Length).ToUpper() == cpf.ToUpper())
                        {
                            //dgParticipantes.Rows[contador].Selected = true;
                            dgParticipantes[1, contador].Selected = true;
                            dgParticipantes_CellClick(new object(), new DataGridViewCellEventArgs(0, 0));
                            break;
                        }

                    }
                   
                    contador++;
                }
            }            
        }

        private void txtNomePesquisa_TextChanged(object sender, EventArgs e)
        {
            if (cbTipoPesquisa.SelectedIndex == 0)
            {
                PesquisarPorCpf(txtCampoPesquisa.Text);
            }

            if (cbTipoPesquisa.SelectedIndex == 1)
            {
                PesquisarPorNome(txtCampoPesquisa.Text);
            }
           
        }

        private void cbTipoPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbTipoPesquisa.SelectedIndex == 0)
            {
                lblTipoPesquisa.Visible = true;
                txtCampoPesquisa.Visible = true;
                lblTipoPesquisa.Text = "CPF:";
                txtCampoPesquisa.Width = 150;
            }

            if (cbTipoPesquisa.SelectedIndex == 1)
            {
                lblTipoPesquisa.Visible = true;
                txtCampoPesquisa.Visible = true;
                lblTipoPesquisa.Text = "Nome:";
                txtCampoPesquisa.Width = 310;
                txtCampoPesquisa.Mask = null;
            }
        }

        private void dgParticipantes_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            button2_Click(new object(), new EventArgs());
        }

        private void button5_Click(object sender, EventArgs e)
        {
            ListarPalestrantes listarPalestrantes = new ListarPalestrantes();
            listarPalestrantes.ShowDialog();

            CarregarGrid();
        }
    }
}